Many computer systems have a specialized graphics processing system for producing vivid graphical images. At the core of these subsystems typically is a graphics processor that processes graphical data in a highly streamlined manner. In simplified terms, the graphics processor converts substantially unprocessed graphical data into a format that can be displayed on a conventional display device (e.g., a cathode ray tube display or a liquid crystal display).
To improve the efficiency and speed of the rendering process, many currently available graphics processing systems distribute scene rendering tasks among multiple rendering devices. Among the other ways, some systems distribute the specific objects in a scene to different devices. For example, when rendering a scene having buildings and cars, such systems may have a first device render the buildings, and a second device render the cars. After completing their respective tasks, both devices forward their rendered objects to a compositor, which combines the received image data (i.e., rendered object data) into a single scene.
To combine the specific images, however, the compositor must compare depth data for each received object. In particular, continuing with the above example, if some of the rendered object data of a building and car intersect the same pixel, then the compositor must analyze the depth data for both of those objects to determine which one is in the foreground. One problem with this process, however, is that depth data for all rendered objects must be transmitted and/or processed. In addition to requiring many depth computations, this excess of data can create a bottleneck in the system, thus further increasing processing time. Many graphical applications, however, such as a real-time display applications, cannot tolerate such inefficiencies.